Executing computer programs/applications, referred to herein as “processes” can suffer from problems related to buggy code, network latency issues, server problems, etc. A “profiling program” or “profiling tool” is a computer program that performs dynamic program analysis, which is the analysis of computer programs on a real or virtual processor during execution of the computer program. A profiling tool captures a trace, which is a stream of recorded events associated with the executing process under analysis, and which can be analyzed to investigate and identify problems with the process.
Multiple types of profiling tools exist. A first type uses instrumentation, where the code of the process to be analyzed is augmented with instrumentation code (“probes”). A second type of profiling tool uses statistical sampling at internals by interacting with the central processing unit (CPU) executing the process to generate profiling trace information. By performing profiling according to either type over time, a model of what the computer was doing over time may be generated and analyzed to troubleshoot the process.